System and method for processing database queries

ABSTRACT

The present invention provides a system and method for processing a database query between one or more clients and one or more databases. The database query, which is formatted using a first protocol, is received from one of the clients. One of the databases is selected to process the database query and the database query is translated from the first protocol to a second protocol. The translated database query is then sent to the selected database for processing. A response to the database query, which is formatted using the second protocol, is received from the selected database and the response is translated from the second protocol to the first protocol. The present invention determines which of the clients sent the database query and sends the translated response to the client that sent the database query. This method can be implemented as a computer program embodied on a computer readable medium.

CROSS-REFERENCE TO RELATED APPLICATION

The present application is a continuation of patent application Ser. No.09/964,954, filed Sep. 27, 2001 now U.S. Pat. No. 7,373,335, the entirecontents of which are incorporated by reference herein.

TECHNICAL FIELD OF THE INVENTION

The present invention relates generally to the field of communicationsand, more particularly, to a system and method for processing databasequeries.

BACKGROUND OF THE INVENTION

Despite the fact that the government requires existing telecommunicationservice companies to allow competitors to access their facilities anddatabases to the extent necessary to provide competitive services,obtaining quick and reliable access to the information contained inthese databases has been difficult, if not impossible. For example,competitive local exchange carriers (“CLEC”) have not had aneasy-to-use, near real-time or real-time system that can access anincumbent local exchange carrier's (“ILEC”) database to determinewhether a phone number will accept a collect call.

Similarly, the increased use of the Internet for purchasing goods andservices has increased the pressure to validate and check pendingtransaction before they are completed. For example, an Internet retailerwould like to determine whether a potential customer's credit card orbanking card is valid and whether the account has the credit or funds topay for the proposed transaction.

In each of the cases described above, a database query will most likelyhave to cross network boundaries, some of which may use proprietary orlegacy protocols. As a result, the processing of these queries isdifficult, slow and cumbersome. Accordingly, there is a need for asystem and method for processing database queries across networkboundaries.

SUMMARY OF THE INVENTION

The present invention provides a system and method for processingdatabase queries across network boundaries. The present invention can beeasily installed on one or more personal computers. Moreover, thepresent invention can create, accept and track database queries in themore commonly used protocols, such as the Internet protocol (“IP”), andtranslates them into proprietary or legacy protocols in real ornear-real time. As a result, the present invention allows the user tobetter manage his or her risk with respect to call or transactionprocessing.

The present invention provides a method of processing a database querybetween one or more clients and one or more databases. The databasequery, which is formatted using a first protocol, is received from oneof the clients. One of the databases is selected to process the databasequery and the database query is translated from the first protocol to asecond protocol. The translated database query is then sent to theselected database for processing. Thereafter, a response to the databasequery, which is formatted using the second protocol, is received fromthe selected database and the response is translated from the secondprotocol to the first protocol. The present invention then determineswhich of the clients sent the database query and sends the translatedresponse to the client that sent the database query. This method can beimplemented as a computer program embodied on a computer readablemedium.

In addition, the present invention provides a system for processing adatabase query between one or more clients and one or more databases.The system includes a computer communicably coupled to the one or moreclients, one or more network servers communicably coupled to thecomputer and the one or more databases, a server/router module residenton the computer and a network interface module resident on each of thenetwork servers. The server/router module receives the database query,which is formatted using a first protocol, from one of the clients,selects one of the network servers and one of the databases to processthe database query, sends the database query to the selected networkserver, determines which of the clients sent the database query, andsends a translated response to the client that sent the database query.The network interface module translates the database query from thefirst protocol to a second protocol, sends the translated database queryto the selected database for processing, receives a response, which isformatted using the second protocol, to the database query from theselected database, translates the response from the second protocol tothe first protocol, and sends the translated response to the computer.

The computer and the server/router module of system described above canbe implemented using a first computer communicably coupled to the one ormore clients, a second computer communicably to the one or more networkservers, a server module resident on the first computer, and a routermodule resident on the second computer. The server module receives thedatabase query, which is formatted using a first protocol, from one ofthe clients, sends the database query to the second computer, and sendsa translated response to the client that sent the database query. Therouter module selects one of the network servers and one of thedatabases to process the database query, sends the database query to theselected network server, determines which of the clients sent thedatabase query, and sends the translated response to the first computer.

Those skilled in the art will appreciate that the present invention isapplicable not only to the compression/decompression of packet headersin the ingress to egress direction, but also to thecompression/decompression of packet headers in the egress to ingressdirection. Other features and advantages of the present invention shallbe apparent to those of ordinary skill in the art upon reference to thefollowing detailed description taken in conjunction with theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

For a better understanding of the invention, and to show by way ofexample how the same may be carried into effect, reference is now madeto the detailed description of the invention along with the accompanyingfigures in which corresponding numerals in the different figures referto corresponding parts and in which:

FIG. 1 is a block diagram of a network in accordance with one embodimentof the present invention;

FIGS. 2A and 2B are block diagrams of various implementations of thepresent invention;

FIG. 3 is a flowchart of an IP to SS7 translation method in accordancewith one embodiment of the present invention; and

FIGS. 4A, 4B and 4C are schematic diagrams of a more detailed generictranslation method in accordance with one embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE INVENTION

While the making and using of various embodiments of the presentinvention are discussed in detail below, it should be appreciated thatthe present invention provides many applicable inventive concepts, whichcan be embodied in a wide variety of specific contexts. For example, inaddition to telecommunications systems and the Internet, the presentinvention may be applicable to other forms of communications or generaldata processing. Other forms of communications may includecommunications between networks, communications via satellite, or anyform of communications not yet known to man as of the date of thepresent invention. The specific embodiments discussed herein are merelyillustrative of specific ways to make and use the invention and do notlimit the scope of the invention.

The present invention provides a system and method for processingdatabase queries across network boundaries. The present invention can beeasily installed on one or more personal computers. Moreover, thepresent invention can create, accept and track database queries in themore commonly used protocols, such as the Internet protocol (“IP”), andtranslate them into proprietary or legacy protocols in real or near-realtime. As a result, the present invention allows the user to bettermanage his or her risk with respect to call or transaction processing.

Referring to FIG. 1, a block diagram of a network 100 in accordance withone embodiment of the present invention is shown. The network 100includes one or more clients 102 communicably coupled to a server/router104. The server/router 104 is communicably coupled to a Signaling System7 (“SS7”) network 108 via SS7 server 106, one or more legacy networks112 via legacy servers 110, and one or more financial networks 116 viabank server 114. One or more financial institutions 118 may also becommunicably coupled to the server/router 104. The clients 102 arecomputers or other devices that submit database queries for processingvia the server/router 104. The functions of the server/router 104 can besplit on separate computers or processing devices. The servers 106, 110and 114 function as gateways between the network where the server/router104 is resident and the networks 108, 112 and 116 where the databasesare resident.

One or more databases, data storage devices, computers or informationsources responsive to database queries submitted by the clients 102 andfinancial institution 118 are resident within networks 108, 112 and 116.The database queries can be of any type known to those skilled in theart. For example, the database queries may be part of a call validationprocess, a call billing process, a bank card validation process, or abank card settlement process. The devices 102, 104, 106, 110, 114 and118 can be communicably coupled via a local network, a wide areanetwork, such as the Internet, satellite links, dedicated communicationlinks, dial-up modems, or any other method of establishing acommunication link between two devices. Communications between thevarious devices 102, 104, 106, 110, 114 and 118 can be sent in the clearor encrypted.

Now referring to FIGS. 2A and 2B, block diagrams of variousimplementations of the present invention are shown. FIG. 2A shows animplementation of the present invention wherein the functionality of theclient 102 (FIG. 1), server/router 104 (FIG. 1) and server 106, 110 or114 (FIG. 1) are combined on a single device 200. The device 200, whichmay be a computer, includes a client module 202, a server module 204, arouting module 206 and one or more network interface modules 208.

The client module 202 is a user application interface that allows theuser to easily and seamlessly create a database query without havingspecial knowledge of the system, network or database that will processthe database query. The client module 202 can be run in a demand modewhere the user decides when to send a database query or in an automaticmode where a database query is automatically created and sent inresponse to one or more events. The client module 202 will also presentthe results of the database query in an easy to understand format.

The server module 204 is capable of dealing with many instances of theclient module 202 wherever they reside. The server module 204 validatesthe client module 202 before any database queries are forwarded to therouting module 206. In addition, the server module 204 is responsiblefor receiving database queries from the client module 202 and sendingresponses to those queries to the appropriate client module 202.

The routing module 206 selects the network interface 208 and thedatabase to send the database query to and then sends the database queryto the selected network interface 208. When the routing module 206receives a response to a database query, it determines which of theclient modules 202 sent the database query and then sends the responseto that client module 202.

The network interface module 208 translates the database query from afirst protocol to a second protocol. The first protocol is used by thenetwork where the database query originated and the second protocol isused by the network where the database resides. For example, the firstprotocol could be an IP or Internet capable protocol. Likewise, thesecond protocol could be a signaling protocol, such as SS7, or aproprietary protocol used by the database owner. The network interfacemodule 208 then sends the translated database query to the selecteddatabase for processing. Thereafter, the network interface module 208receives a response from the selected database and translates it fromthe second protocol to the first protocol. The translated response isthen sent to the routing module 206.

FIG. 2B shows an implementation of the present invention wherein thefunctionality of the client 102 (FIG. 1), server/router 104 (FIG. 1) andserver 106, 110 or 114 (FIG. 1) are separated and placed on multipledevices 212, 214, 216 and 218. The client 212, which may be a computer,includes the client module. The server 214, which may be a computer,includes the server module. The router 216, which may be a computer,includes the routing module. The network server 218, which may be acomputer, includes one or more of the network interface modules. Thecontrast between FIGS. 2A and 2B demonstrates the versatility of thepresent invention.

Referring now to FIGS. 2B and 3, a flowchart of an IP to SS7 translationmethod in accordance with one embodiment of the present invention isshown in FIG. 3. The process starts in block 300. The client 212connects to the server 214 in block 302 and the server 214 validates theclient 212 in block 304. If the client 212 is successfully validated, anIP Query (a database query in an IP format—the first protocol) is sentfrom the client 212 to the server 214 in block 306. The IP Query is thensent from the server 214 to the router 216 in block 308 where the router216 determines the destination SS7 database and the SS7 network server218 to which the IP Query should be sent in block 310. The IP Query issent from the router 216 to the SS7 network server 218 in block 312where the SS7 network server 218 translates the IP Query into a SS7Query (a database query in a SS7 format—the second protocol) in block314. The SS7 Query is sent to the destination SS7 database forprocessing in block 316.

The destination SS7 database processes the SS7 Query and creates a SS7Response in block 318. Those skilled in the art will recognize that theactual processing of the SS7 Query may be accomplished with a databaseinterface application or other type of management software to controland handle queries to the database. The SS7 Response is then sent fromthe SS7 destination database to the SS7 network server 218 in block 320where the SS7 network server 218 translates the SS7 Response (a databaseresponse in a SS7 format—the second protocol) into an IP Response (adatabase response in an IP format—the first protocol) in block 322. TheIP Response is sent from the SS7 network server 218 to the router 216 inblock 324 where the router 216 determines the client destination for theIP Response in block 326. The IP Response is then sent from the router216 to the server 214 in block 328 and then from the server 214 to theclient 212 in block 330. The client 212 can then either disconnect fromthe server 214 in block 332 or repeat the process previously describedfor new database queries. Once disconnected, the process ends in block334. Those skilled in the art will recognize that the process describedin FIG. 3 is not limited to the use of the IP and SS7 protocols.

Now referring to FIGS. 4A, 4B and 4C, schematic diagrams of a moredetailed generic translation method in accordance with one embodiment ofthe present invention are shown. The process starts in block 400. Theuser logs into the client module in block 402 and the client moduleconnects to the server module in block 404. The server module validatesthe user and/or client module in block 406. If the validation is notsuccessful, as determined in decision block 408, the server moduledenies access to the user and/or client module in block 410 and theprocess loops back to allow the user and/or client module to try againin block 402 or 404.

If, however, the validation is successful, as determined in decisionblock 408, the user submits a query, which is formatted in a firstprotocol, to the server module via the client module in block 412. Thequery is then sent from the server module to the router module in block414 where the router module determines the destination database andnetwork interface module in block 416. If the destination address(database) and network interface module are not found, as determined indecision block 418, an error message is returned to the client modulevia the server module in block 420 and the process loops back to allowthe user to submit another query in block 412.

If, however, the destination address (database) and network interfacemodule are found, as determined in decision block 418, the server modulesends the query to the router module in block 422 and the server modulesets a timer for the query in block 424. The server module also storesthe client module address and query identification information in block426 so that the response to the query can be sent to the correct clientmodule. The query is then sent from the router module to the networkinterface module for the destination address (destination network serverand database) in block 428. The network interface module translates thequery into a network query (a database query formatted in the secondprotocol) in block 430. The network interface module then logs thenetwork query in block 432 and sends the network query to thedestination address (database) for processing in block 434.

The destination database processes the network query and creates anetwork response in block 436. Those skilled in the art will recognizethat the actual processing of the network query may be accomplished witha database interface application or other type of management software tocontrol and handle queries to the database. The network response is thensent from the destination address (database) to the network interfacemodule in block 438 where the network interface module correlates thenetwork response with the corresponding network query in block 440. Thenetwork interface module translates the network response (a databaseresponse in the second protocol format) into a client response (adatabase response in the first protocol format) in block 442. The clientresponse is sent from the network interface module to the router modulein block 444 where the router module correlates the client response withthe query (determines the proper client module) in block 446. The clientresponse is then sent from the router module to the server module inblock 448 and then from the server module to the client module in block450. The query timer is also turned off in block 450. If there are notother queries, as determined by decision block 452, the user logs out ofthe client module in block 454 and the process ends in block 456. If,however, there is another query, as determined in decision block 452,the process loops back to receive another query from the user in block412.

After the query has been sent by the server module in block 422, thequery timer monitors whether a response to the query has been received.If the timer has not expired, as determined in decision block 462, thequery timer continues to wait for a response. If, however, the timer hasexpired, as determined in decision block 462, the server module sends atime out response to the client module in block 464. As previouslydescribed, the client module, server module, router module and networkinterface module can be separated or combined in any configuration thatfits the application of the present invention.

If encrypted messages are required, the steps of sending the translateddatabase query to the selected database for processing and receiving aresponse to the database query from the selected database will beperformed using the following steps. The translated database query isfirst encrypted. Thereafter, the encrypted database query is sent to theselected database for processing. With respect to the responses, theencrypted response to the encrypted database query is received from theselected database. Thereafter, the encrypted response is decrypted intoa response. Any type of standard encryption/decryption method can beused.

For example, the present invention can be used find out informationabout a specific telephone number. In such a case, the user uses theclient module to create and submit a query using the telephone number tothe server module. The router then selects the proper database, which isusually a line information database (“LIDB”) located on an ILEC'ssignaling network, to process the query. The response from the databasecan then be used to process a call related to the telephone number.Similarly, the user can submit a calling card number, credit card numberor bank card number.

The embodiments and examples set forth herein are presented to bestexplain the present invention and its practical application and tothereby enable those skilled in the art to make and utilize theinvention. However, those skilled in the art will recognize that theforegoing description and examples have been presented for the purposeof illustration and example only. The description as set forth is notintended to be exhaustive or to limit the invention to the precise formdisclosed. Many modifications and variations are possible in light ofthe above teaching without departing from the spirit and scope of thefollowing claims.

1. A method of processing a database query between one or more clientsand one or more databases, the method comprising the steps of: receivingthe database query from one of the clients, the database query formattedusing a first protocol; setting a query timer to monitor the elapsedtime from when the database query was received; selecting one of thedatabases to process the database query; translating the database queryfrom the first protocol to a second protocol; sending the translateddatabase query to the selected database for processing; receiving aresponse to the database query from the selected database, the responseformatted using the second protocol; translating the response from thesecond protocol to the first protocol; determining which of the clientssent the database query; sending the translated response to the clientthat sent the database query; monitoring via the query timer, whetherthe translated response to the database query has been received duringthe elapsed time since the database query was received and waiting forthe response via the query timer if the query timer has not expired; andturning off the query timer responsive to the translated response beingreceived.
 2. The method as recited in claim 1, further comprising thestep of validating the client.
 3. The method as recited in claim 1,further comprising the step of sending a time out response to the clientthat sent the database query whenever the translated response has notbeen received within a specified time period.
 4. The method as recitedin claim 1, further comprising the step of logging the database query.5. The method as recited in claim 1, further comprising the step ofstoring an address identifier for the client that sent the databasequery.
 6. The method as recited in claim 1, further comprising the stepof storing a query identifier for the database query.
 7. The method asrecited in claim 1, wherein the steps of sending the translated databasequery to the selected database for processing and receiving a responseto the database query from the selected database, the response formattedusing the second protocol comprise the steps of: encrypting thetranslated database query; sending the encrypted database query to theselected database for processing; receiving an encrypted response to theencrypted database query from the selected database, the responseformatted using the second protocol; and decrypting the encryptedresponse into a response.
 8. The method as recited in claim 1, whereinthe first protocol is an Internet protocol.
 9. The method as recited inclaim 1, wherein the second protocol is a signaling protocol.
 10. Themethod as recited in claim 9, wherein the signaling protocol is aSignaling' System 7 protocol.
 11. The method as recited in claim 1,wherein the database query is part of a call validation process.
 12. Themethod as recited in claim 1, wherein the database query is part of acall billing process.
 13. The method as recited in claim 1, wherein thedatabase query is part of a bank card validation process.
 14. The methodas recited in claim 1, wherein the database query is part of a bank cardsettlement process.
 15. The method as recited in claim 1, wherein theselected database is a line information database.
 16. A system forprocessing a database query between one or more clients and one or moredatabases, the system comprising: a computer communicably coupled to theone or more clients; one or more network servers communicably coupled tothe computer and the one or more databases; a server/router moduleresident on the computer, the server/router module: receives thedatabase query from one of the clients, the database query formattedusing a first protocol; sets a query timer to monitor the elapsed timefrom when the database query was received; selects one of the networkservers and one of the databases to process the database query; sendsthe database query to the selected network server; determines which ofthe clients sent the database query, and sends a translated response tothe client that sent the database query; and a network interface moduleresident on each of the network servers, the network interface module:translates the database query from the first protocol to a secondprotocol; sends the translated database query to the selected databasefor processing; receives a response to the database query from theselected database, the response formatted using the second protocol;translates the response from the second protocol to the first protocol;and sends the translated response to the computer; monitors via thequery time whether the translated response to the database query hasbeen received during the elapsed time since the database query wasreceived and waiting for the response via the query timer if the querytimer has not expired; and turning off the query timer responsive to thetranslated response being received.
 17. The system as recited in claim16, wherein the server/router module validates the client.
 18. Thesystem as recited in claim 16, wherein the server/router module sends atime out response to the client that sent the database query wheneverthe translated response has not been received within a specified timeperiod.
 19. The system as recited in claim 16, wherein the networkinterface module logs the database query.
 20. The system as recited inclaim 16, wherein the server/router module stores at least one of: anaddress identifier for the client that sent the database query; and aquery identifier for the database query.
 21. The system as recited inclaim 16, wherein the network interface module sends the translateddatabase query to the selected database for processing and receives theresponse to the database query from the selected database, the responseformatted using the second protocol by encrypting the translateddatabase query, sending the encrypted database query to the selecteddatabase for processing, receiving an encrypted response to theencrypted database query from the selected database, the responseformatted using the second protocol, and decrypting the encryptedresponse into the response.
 22. The system as recited in claim 16,wherein the computer and the server/router module comprise: a firstcomputer communicably coupled to the one or more clients; a secondcomputer communicably to the one or more network servers; a servermodule resident on the first computer, the server module receiving thedatabase query from one of the clients, the database query formattedusing a first protocol, sending the database query to the secondcomputer, and sending a translated response to the client that sent thedatabase query; and a router module resident on the second computer, therouter module selecting one of the network servers and one of thedatabases to process the database query, sending the database query tothe selected network server, determining which of the clients sent thedatabase query, and sending the translated response to the firstcomputer.
 23. The system as recited in claim 16, wherein the firstprotocol is an Internet protocol.
 24. The system as recited in claim 16,wherein the second protocol is a signaling protocol.
 25. The system asrecited in claim 24, wherein the signaling protocol is a SignalingSystem 7 protocol.
 26. The system as recited in claim 16, wherein atleast one of the network servers is at least one of: a service controlpoint; a legacy server; and a bank server.
 27. The system as recited inclaim 16, wherein the database query is at least one of: part of a callvalidation process; part of a call billing process; part of a bank cardvalidation process; and part of a bank card settlement process.
 28. Thesystem as recited in claim 16, wherein the selected database is a lineinformation database.
 29. A method of processing a database query, themethod comprising: receiving the database query based on a firstprotocol, the database query related to information about a telephonenumber, the database query sent using the telephone number; setting aquery timer to monitor the elapsed time from when the database query wasreceived; translating the database query from the first protocol to asecond protocol; processing the translated database query by a lineinformation database; receiving a response formatted using the secondprotocol, the response used to process a call related to the telephonenumber; translating the response from the second protocol to the firstprotocol; sending the translated response to the client that sent thedatabase query; monitoring via the query timer whether the translatedresponse to the database query has been received during the elapsed timesince the database query was received and waiting for the response viathe query timer if the query timer has not expired; and turning offquery timer when the translated response has been received.